package org.polyforms.repository.executor;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Indicates the annotated method is executed by specified {@link Executor}.
 * 
 * @author Kuisong Tong
 * @since 1.0
 */
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ExecutedBy {
    /**
     * Class of {@link Executor} to execute annotated method.
     * 
     * @return class of Executor
     */
    Class<? extends Executor> value();
}
